
/**
 * Buttons
 * --------------------------------------------------
 */

.button {
  // set the color defaults
  @include button-style($button-default-bg, $button-default-border, $button-default-active-bg, $button-default-active-border, $button-default-text);

  position: relative;
  display: inline-block;
  margin: 0;
  padding: 0 $button-padding;

  min-width: ($button-padding * 3) + $button-font-size;
  min-height: $button-height + 5px;

  border-width: $button-border-width;
  border-style: solid;
  border-radius: $button-border-radius;

  vertical-align: top;
  text-align: center;

  text-overflow: ellipsis;
  font-size: $button-font-size;
  line-height: $button-height - $button-border-width + 1px;

  cursor: pointer;

  &:after {
    // used to create a larger button "hit" area
    position: absolute;
    top: -6px;
    right: -6px;
    bottom: -6px;
    left: -6px;
    content: ' ';
  }

  .icon {
    vertical-align: top;
    pointer-events: none;
  }

  .icon:before,
  &.icon:before,
  &.icon-left:before,
  &.icon-right:before {
    display: inline-block;
    padding: 0 0 $button-border-width 0;
    vertical-align: inherit;
    font-size: $button-icon-size;
    line-height: $button-height - $button-border-width;
    pointer-events: none;
  }
  &.icon-left:before {
    float: left;
    padding-right: .2em;
    padding-left: 0;
  }
  &.icon-right:before {
    float: right;
    padding-right: 0;
    padding-left: .2em;
  }

  &.button-block, &.button-full {
    margin-top: $button-block-margin;
    margin-bottom: $button-block-margin;
  }

  &.button-light {
    @include button-style($button-light-bg, $button-light-border, $button-light-active-bg, $button-light-active-border, $button-light-text);
    @include button-clear($button-light-border);
    @include button-outline($button-light-border);
  }

  &.button-stable {
    @include button-style($button-stable-bg, $button-stable-border, $button-stable-active-bg, $button-stable-active-border, $button-stable-text);
    @include button-clear($button-stable-border);
    @include button-outline($button-stable-border);
  }

  &.button-positive {
    @include button-style($button-positive-bg, $button-positive-border, $button-positive-active-bg, $button-positive-active-border, $button-positive-text);
    @include button-clear($button-positive-bg);
    @include button-outline($button-positive-bg);
  }

  &.button-calm {
    @include button-style($button-calm-bg, $button-calm-border, $button-calm-active-bg, $button-calm-active-border, $button-calm-text);
    @include button-clear($button-calm-bg);
    @include button-outline($button-calm-bg);
  }

  &.button-assertive {
    @include button-style($button-assertive-bg, $button-assertive-border, $button-assertive-active-bg, $button-assertive-active-border, $button-assertive-text);
    @include button-clear($button-assertive-bg);
    @include button-outline($button-assertive-bg);
  }

  &.button-balanced {
    @include button-style($button-balanced-bg, $button-balanced-border, $button-balanced-active-bg, $button-balanced-active-border, $button-balanced-text);
    @include button-clear($button-balanced-bg);
    @include button-outline($button-balanced-bg);
  }

  &.button-energized {
    @include button-style($button-energized-bg, $button-energized-border, $button-energized-active-bg, $button-energized-active-border, $button-energized-text);
    @include button-clear($button-energized-bg);
    @include button-outline($button-energized-bg);
  }

  &.button-royal {
    @include button-style($button-royal-bg, $button-royal-border, $button-royal-active-bg, $button-royal-active-border, $button-royal-text);
    @include button-clear($button-royal-bg);
    @include button-outline($button-royal-bg);
  }

  &.button-dark {
    @include button-style($button-dark-bg, $button-dark-border, $button-dark-active-bg, $button-dark-active-border, $button-dark-text);
    @include button-clear($button-dark-bg);
    @include button-outline($button-dark-bg);
  }
}

.button-small {
  padding: 2px $button-small-padding 1px;
  min-width: $button-small-height;
  min-height: $button-small-height + 2;
  font-size: $button-small-font-size;
  line-height: $button-small-height - $button-border-width - 1;

  .icon:before,
  &.icon:before,
  &.icon-left:before,
  &.icon-right:before {
    font-size: $button-small-icon-size;
    line-height: $button-small-icon-size + 3;
    margin-top: 3px;
  }
}

.button-large {
  padding: 0 $button-large-padding;
  min-width: ($button-large-padding * 3) + $button-large-font-size;
  min-height: $button-large-height + 5;
  font-size: $button-large-font-size;
  line-height: $button-large-height - $button-border-width;

  .icon:before,
  &.icon:before,
  &.icon-left:before,
  &.icon-right:before {
    padding-bottom: ($button-border-width * 2);
    font-size: $button-large-icon-size;
    line-height: $button-large-height - ($button-border-width * 2) - 1;
  }
}

.button-icon {
  @include transition(opacity .1s);
  padding: 0 6px;
  min-width: initial;
  border-color: transparent;
  background: none;

  &.button.active,
  &.button.activated {
    border-color: transparent;
    background: none;
    box-shadow: none;
    opacity: 0.3;
  }

  .icon:before,
  &.icon:before {
    font-size: $button-large-icon-size;
  }
}

.button-clear {
  @include button-clear($button-default-border);
  @include transition(opacity .1s);
  padding: 0 $button-clear-padding;
  max-height: $button-height;
  border-color: transparent;
  background: none;
  box-shadow: none;

  &.active,
  &.activated {
    opacity: 0.3;
  }
}

.button-outline {
  @include button-outline($button-default-border);
  @include transition(opacity .1s);
  background: none;
  box-shadow: none;
}

.padding > .button.button-block:first-child {
  margin-top: 0;
}

.button-block {
  display: block;
  clear: both;

  &:after {
    clear: both;
  }
}

.button-full,
.button-full > .button {
  display: block;
  margin-right: 0;
  margin-left: 0;
  border-right-width: 0;
  border-left-width: 0;
  border-radius: 0;
}

button.button-block,
button.button-full,
.button-full > button.button,
input.button.button-block  {
  width: 100%;
}

a.button {
  text-decoration: none;

  .icon:before,
  &.icon:before,
  &.icon-left:before,
  &.icon-right:before {
    margin-top: 2px;
  }
}

.button.disabled,
.button[disabled] {
  opacity: .4;
  cursor: default !important;
  pointer-events: none;
}
